css parser: Add :link and :visited
authorTimm Bäder <mail@baedert.org>
Tue, 8 Oct 2013 09:27:53 +0000 (11:27 +0200)
committerBenjamin Otte <otte@redhat.com>
Mon, 4 Nov 2013 15:36:11 +0000 (16:36 +0100)
... which are both to be used for links instead of the current
-GtkWidget-link-color and -GtkWidget-visited-link-color

https://bugzilla.gnome.org/show_bug.cgi?id=709629

gtk/gtkcssmatcher.c
gtk/gtkcssselector.c
gtk/gtkenums.h
gtk/gtkwidget.c

index ccdf5479cf853575e5e1fd3615a05c09f9a8b0e9..b0bdfd1480809c74737f036207c1aead580097e3 100644 (file)
@@ -230,7 +230,8 @@ gtk_css_matcher_any_get_state (const GtkCssMatcher *matcher)
 
   return GTK_STATE_FLAG_ACTIVE | GTK_STATE_FLAG_PRELIGHT | GTK_STATE_FLAG_SELECTED
     | GTK_STATE_FLAG_INSENSITIVE | GTK_STATE_FLAG_INCONSISTENT
-    | GTK_STATE_FLAG_FOCUSED | GTK_STATE_FLAG_BACKDROP;
+    | GTK_STATE_FLAG_FOCUSED | GTK_STATE_FLAG_BACKDROP | GTK_STATE_FLAG_LINK
+    | GTK_STATE_FLAG_VISITED;
 }
 
 static gboolean
@@ -326,7 +327,8 @@ gtk_css_matcher_superset_get_state (const GtkCssMatcher *matcher)
   else
     return GTK_STATE_FLAG_ACTIVE | GTK_STATE_FLAG_PRELIGHT | GTK_STATE_FLAG_SELECTED
       | GTK_STATE_FLAG_INSENSITIVE | GTK_STATE_FLAG_INCONSISTENT
-      | GTK_STATE_FLAG_FOCUSED | GTK_STATE_FLAG_BACKDROP;
+      | GTK_STATE_FLAG_FOCUSED | GTK_STATE_FLAG_BACKDROP | GTK_STATE_FLAG_LINK
+      | GTK_STATE_FLAG_VISITED;
 }
 
 static gboolean
index 216090faaddccaeba251026712d5066ddac2c63e..25b174cb8a4f3804f7ea564d22ef36207b19985d 100644 (file)
@@ -1827,7 +1827,9 @@ parse_selector_pseudo_class (GtkCssParser   *parser,
     { "focus",        GTK_STATE_FLAG_FOCUSED, },
     { "backdrop",     GTK_STATE_FLAG_BACKDROP, },
     { "dir(ltr)",     GTK_STATE_FLAG_DIR_LTR, },
-    { "dir(rtl)",     GTK_STATE_FLAG_DIR_RTL, }
+    { "dir(rtl)",     GTK_STATE_FLAG_DIR_RTL, },
+    { "link",         GTK_STATE_FLAG_LINK, },
+    { "visited",      GTK_STATE_FLAG_VISITED, }
   };
   guint i;
 
index 82f5a0a010d19ffea4f2b08b31727636178d6079..c1e0311d418e31b11c4bc506f98a1c9eb613b683 100644 (file)
@@ -889,6 +889,8 @@ typedef enum
  * @GTK_STATE_FLAG_BACKDROP: Widget is in a background toplevel window.
  * @GTK_STATE_FLAG_DIR_LTR: Widget is in left-to-right text direction. Since 3.8
  * @GTK_STATE_FLAG_DIR_RTL: Widget is in right-to-left text direction. Since 3.8
+ * @GTK_STATE_FLAG_LINK: Widget is a link. Since 3.12
+ * @GTK_STATE_FLAG_VISITED: The location the widget points to has already been visited. Since 3.12
  *
  * Describes a widget state. Widget states are used to match the widget
  * against CSS pseudo-classes. Note that GTK extends the regular CSS
@@ -905,7 +907,9 @@ typedef enum
   GTK_STATE_FLAG_FOCUSED      = 1 << 5,
   GTK_STATE_FLAG_BACKDROP     = 1 << 6,
   GTK_STATE_FLAG_DIR_LTR      = 1 << 7,
-  GTK_STATE_FLAG_DIR_RTL      = 1 << 8
+  GTK_STATE_FLAG_DIR_RTL      = 1 << 8,
+  GTK_STATE_FLAG_LINK         = 1 << 9,
+  GTK_STATE_FLAG_VISITED      = 1 << 10
 } GtkStateFlags;
 
 /**
index 21d02f371934bb2e9e0131bfbf50b1ac9f23b548..be1ce0522db639c537d9551df51898790c1c8d2a 100644 (file)
 
 #define WIDGET_CLASS(w)         GTK_WIDGET_GET_CLASS (w)
 
-#define GTK_STATE_FLAGS_BITS 9
+#define GTK_STATE_FLAGS_BITS 11
 
 typedef struct {
   gchar               *name;           /* Name of the template automatic child */